function perform_ajax(murl, mtype, mdata, mdatatype, callback) {

    ajax({
        url: murl,              //请求地址
        type: mtype,                       //请求方式
        data: mdata,        //请求参数
        dataType: mdatatype,
        success: function (response, xml) {
            //alert(response+";"+xml);
            retstr = { result: 1, data: response };
            callback(retstr);
            // 此处放成功后执行的代码
        },
        fail: function (status) {
            retstr = { result: 0, data: response };
            callback(retstr);
            //alert(2222);
            // 此处放失败后执行的代码
        }
    });
}
function ajax(options) {
    options = options || {};
    options.type = (options.type || "GET").toUpperCase();
    options.dataType = options.dataType || "json";
    var params = formatParams(options.data);

    //创建 - 非IE6 - 第一步
    if (window.XMLHttpRequest) {
        var xhr = new XMLHttpRequest();
    } else { //IE6及其以下版本浏览器
        var xhr = new ActiveXObject('Microsoft.XMLHTTP');
    }

    //接收 - 第三步
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            var status = xhr.status;
            if (status >= 200 && status < 300) {
                options.success && options.success(xhr.responseText, xhr.responseXML);
            } else {
                options.fail && options.fail(status);
            }
        }
    }

    //连接 和 发送 - 第二步
    if (options.type == "GET") {
        xhr.open("GET", options.url + "?" + params, true);
        xhr.send(null);
    } else if (options.type == "POST") {
        xhr.open("POST", options.url, true);
        //设置表单提交时的内容类型
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send(params);
    }
}
function formatParams(data) {
    var arr = [];
    for (var name in data) {
        arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
    }
    arr.push(("v=" + Math.random()).replace(".", ""));
    return arr.join("&");
}
function trim(str) { //删除左右两端的空格
    return str.replace(/(^\s*)|(\s*$)/g, "");
}
function ltrim(str) { //删除左边的空格
    return str.replace(/(^\s*)/g, "");
}
function rtrim(str) { //删除右边的空格
    return str.replace(/(\s*$)/g, "");
}

function HashMap() {
    //定义长度  
    var length = 0;
    //创建一个对象  
    var obj = new Object();

    /** 
    * 判断Map是否为空 
    */
    this.isEmpty = function () {
        return length == 0;
    };

    /** 
    * 判断对象中是否包含给定Key 
    */
    this.containsKey = function (key) {
        return (key in obj);
    };

    /** 
    * 判断对象中是否包含给定的Value 
    */
    this.containsValue = function (value) {
        for (var key in obj) {
            if (obj[key] == value) {
                return true;
            }
        }
        return false;
    };

    /** 
    *向map中添加数据 
    */
    this.put = function (key, value) {
        if (!this.containsKey(key)) {
            length++;
        }
        obj[key] = value;
    };

    /** 
    * 根据给定的Key获得Value 
    */
    this.get = function (key) {
        return this.containsKey(key) ? obj[key] : null;
    };

    /** 
    * 根据给定的Key删除一个值 
    */
    this.remove = function (key) {
        if (this.containsKey(key) && (delete obj[key])) {
            length--;
        }
    };

    /** 
    * 获得Map中的所有Value 
    */
    this.values = function () {
        var _values = new Array();
        for (var key in obj) {
            _values.push(obj[key]);
        }
        return _values;
    };

    /** 
    * 获得Map中的所有Key 
    */
    this.keySet = function () {
        var _keys = new Array();
        for (var key in obj) {
            _keys.push(key);
        }
        return _keys;
    };

    /** 
    * 获得Map的长度 
    */
    this.size = function () {
        return length;
    };

    /** 
    * 清空Map 
    */
    this.clear = function () {
        length = 0;
        obj = new Object();
    };
}
/*生成工单编号
         ** randomWord 产生任意长度随机字母数字组合
         ** randomFlag-是否任意长度 min-任意长度最小位[固定位数] max-任意长度最大位
         ** xuanfeng 2014-08-28
         */
function randomWord(randomFlag, min, max) {
    var str = "",
        range = min,
        arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
    // 随机产生
    if (randomFlag) {
        range = Math.round(Math.random() * (max - min)) + min;
    }
    for (var i = 0; i < range; i++) {
        pos = Math.round(Math.random() * (arr.length - 1));
        str += arr[pos];
    }
    return str;
}

export {HashMap}